import org.jfugue.pattern.Pattern;
import org.jfugue.player.Player;

public class CanonPlay {
    public static void main(String[] args) {
        Player player = new Player();

        String canon =
                // 第1-2行：四分与八分交替
                "C4q E4q G4q C5q B4q C5q G4q E4q " +
                "C4i E4i G4i C5i B4i C5i G4i E4i " +
                // 第3-4行：高音区交替
                "G4q C5q E5q G5q F5q E5q D5q C5q " +
                "G4i C5i E5i G5i F5i E5i D5i C5i";

        String chords =
                "Rw" +
                // 和弦进行（每拍一个和弦）
                " (C3+C4+E4+G4)q-  (G2+B3+D4+G4)q-  " +  // 第1小节
                " (A2+A3+C4+E4)q-  (E3+G3+B3+E4)q-  " +  // 第2小节
                " (F3+F3+A4+C5)q-  (C3+C4+E4+G4)q-  " +  // 第3小节
                " (F3+F3+A4+C5)q-  (G2+B3+D4+G4)q-  "   // 第4小节
                ;
        Pattern mainPattern = new Pattern("T70 :CON(7,100) :CON(10,100) I[Piano] V0 ");  // 速度设为70 BPM（可改为60-80）
        for(int i =0; i<4; i++){ //循环四次，延长音频时间
            mainPattern.add(canon);
        }
        Pattern chordPattern = new Pattern("T70 :CON(7,1) :CON(10,1) I[Piano] V1 ");  // 速度70 BPM
        for(int i = 0; i<6; i++){ //循环六次，因为和旋比较短
            chordPattern.add(chords);
        }
        player.play(mainPattern, chordPattern);
    }
}
